package com.inews.base.utils;

import java.util.ArrayList;
import java.util.List;

import org.springframework.data.domain.Page;

import com.inews.base.vo.ExtData;

/**
 * ExtData 对象工厂
 */
public final class ExtDataUtil {

	/**
	 * 建立包含单条数据的对象.
	 * 
	 */
	public static ExtData<Object> genWithSingleData(Object obj) {
		List<Object> data = new ArrayList<Object>();
		data.add(obj);
		return genWithData(data);
	}

	/**
	 * 建立包含系统异常的对象.
	 * 
	 * @param syserr
	 *            the syserr
	 * 
	 * @return the ext data
	 */
	public static ExtData<? extends Object> genWithExceptions(String sysErr) {
		return getExtData(0, null, 0, false, sysErr);
	}

	/**
	 * 建立包含正常数据的对象.
	 * 
	 */
	public static <T>ExtData<T> genWithData(List<T> root) {
		List<T> t_root = root == null ? new ArrayList<T>() : root;
		return getExtData(0, t_root, t_root.size(), true, null);
	}
	
	
	/**
	 * 建立包含正常数据的分页对象.
	 * 
	 */
	public static <T>ExtData<T> genWithPageData(Page<T> pageList) {
		return getExtData(0, pageList.getContent(), pageList.getTotalElements(), true, null);
	}

	
	/**
	 * 建立ExtData对象.
	 * 
	 */
	private static <T>ExtData<T> getExtData(int status, List<T> root, long totalproperty,
			boolean success, String sysErr) {
		ExtData<T> data = new ExtData<T>();
		data.setRoot(root);
		data.setStatus(status);
		data.setSuccess(success);
		data.setSysErr(sysErr);
		data.setTotalProperty(totalproperty);
		return data;
	}
	
}
